package com.nuedu.corejava.ch6;

/**
 * 类的常见结构
 * 
 * 
 * @author admin
 *
 */
// 在一个java文件中，只能有一个类是public类型的，且类的名称必须以文件名相同（大小写敏感）；
// 在java类中，如果编写了静态代码块，代码块和构造器：在实例化对象时的执行先后顺序：静态代码块->代码块->构造方法

public class Outter {

	// 实例变量，--实例属性 - 实例属性只跟对象相关
	private int id;
	private String name;

	// 静态变量 - 类属性--类属性是全局，与类相关；
	static String man = "男";
	static String woman = "女";

	public Outter() {
		System.out.println("outter 构造方法");

	}

	{
		// 在一个java类中可以编写代码块。
		// 代码块是跟实例相关的，在执行构造方法前执行（在new时才会执行，并且执行顺序最早）
		System.out.println("java代码块");
	}
	static {
		// 在一个java类中可以编写静态代码块。
		// 静态代码块是跟类相关的（只要用到该类就是执行）
		System.out.println("java静态代码块");
	}

	public class inner {
		// 实例变量
		// 类变量
		// 方法
		// 代码块
		// 内部类不能编写静态代码块
		{

		}

		public class inner2 {
			// 内部类可以支持多级嵌套
		}

		//特殊的，内部类有一种情况叫做匿名内部类
		//在使用new关键词实例化接口或抽象类时，可以编写成匿名内部类；
		Runnable runnable = new Runnable() {

			@Override
			public void run() {

			}
		};
	}

	public class inner3 {
		// 在一个类中可以嵌套多个内部类

	}

}

// 在一个java文件中可以编写多个java类（都是外部类）
class outter2 {

}